#!/bin/bash

# 函数定义：去重数组
# 参数：原始数组
# 返回：去重后的数组
unique_array() {
    local input_array=("$@")
    local unique=()
    # 使用printf将数组元素按行输出，然后通过sort和uniq去重
    unique=($(printf "%s\n" "${input_array[@]}" | sort | uniq))
    echo "${unique[@]}"
}

function reamin_target_hosts() {
  local input_array=("$@")
  local file_path="${input_array[-1]}"
  input_array=("${input_array[@]:0:${#input_array[@]}-1}")
  # 检查文件路径是否有效
  if [[ -z "$file_path" ]]; then
      echo "文件路径未提供"
      return 1
  fi

  # 将数组元素写入文件
  printf "%s\n" "${input_array[@]}" > "$file_path"

  # 检查写入是否成功
  if [[ $? -eq 0 ]]; then
      echo "数组已成功写入文件: $file_path"
  else
      echo "写入文件失败: $file_path"
      return 1
  fi
}

# 函数定义：判断两个参数是否都不在数组中
# 参数1：第一个参数
# 参数2：第二个参数
# 参数3：数组
check_parameters_not_in_array() {
    local param1="$1"
    local param2="$2"
    shift 2
    local array=("$@")

    # 检查参数是否在数组中
    local found_param1=false
    local found_param2=false

    for item in "${array[@]}"; do
        if [[ "$item" == "$param1" ]]; then
            found_param1=true
        fi
        if [[ "$item" == "$param2" ]]; then
            found_param2=true
        fi
    done

    # 判断两个参数是否都不在数组中
    if [[ "$found_param1" == true && "$found_param2" == true ]]; then
        echo 0
    else
        echo 1
    fi
}


# 函数定义：剔除数组1中在数组2中存在的元素
# 参数1：数组1
# 参数2：数组2
remove_elements_from_array() {
    local array1=("${!1}")
    local array2=("${!2}")

    # 创建一个新的数组来存储剔除后的元素
    local result=()

    # 遍历数组1中的每个元素
    for item1 in "${array1[@]}"; do
        # 假设当前元素不在数组2中
        local found=false
        # 遍历数组2中的每个元素
        for item2 in "${array2[@]}"; do
            if [[ "$item1" == "$item2" ]]; then
                found=true
                break
            fi
        done
        # 如果当前元素不在数组2中，则添加到结果数组
        if [[ "$found" == false ]]; then
            result+=("$item1")
        fi
    done

    # 输出结果数组
    echo "${result[@]}"
}

